home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / whichdb.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  2KB  |  115 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''Guess which db package to use to open a db file.'''
  5. import os
  6. import struct
  7. import sys
  8.  
  9. try:
  10.     import dbm
  11.     _dbmerror = dbm.error
  12. except ImportError:
  13.     dbm = None
  14.     _dbmerror = IOError
  15.  
  16.  
  17. def whichdb(filename):
  18.     '''Guess which db package to use to open a db file.
  19.  
  20.     Return values:
  21.  
  22.     - None if the database file can\'t be read;
  23.     - empty string if the file can be read but can\'t be recognized
  24.     - the module name (e.g. "dbm" or "gdbm") if recognized.
  25.  
  26.     Importing the given module may still fail, and opening the
  27.     database using that module may still fail.
  28.     '''
  29.     
  30.     try:
  31.         f = open(filename + os.extsep + 'pag', 'rb')
  32.         f.close()
  33.         if not dbm.library == 'GNU gdbm' and sys.platform == 'os2emx':
  34.             f = open(filename + os.extsep + 'dir', 'rb')
  35.             f.close()
  36.         
  37.         return 'dbm'
  38.     except IOError:
  39.         
  40.         try:
  41.             f = open(filename + os.extsep + 'db', 'rb')
  42.             f.close()
  43.             if dbm is not None:
  44.                 d = dbm.open(filename)
  45.                 d.close()
  46.                 return 'dbm'
  47.         except (IOError, _dbmerror):
  48.             pass
  49.         except:
  50.             None<EXCEPTION MATCH>(IOError, _dbmerror)
  51.         
  52.  
  53.         None<EXCEPTION MATCH>(IOError, _dbmerror)
  54.  
  55.     
  56.     try:
  57.         os.stat(filename + os.extsep + 'dat')
  58.         size = os.stat(filename + os.extsep + 'dir').st_size
  59.         if size == 0:
  60.             return 'dumbdbm'
  61.         
  62.         f = open(filename + os.extsep + 'dir', 'rb')
  63.         
  64.         try:
  65.             if f.read(1) in ("'", '"'):
  66.                 return 'dumbdbm'
  67.         finally:
  68.             f.close()
  69.  
  70.     except (OSError, IOError):
  71.         pass
  72.  
  73.     
  74.     try:
  75.         f = open(filename, 'rb')
  76.     except IOError:
  77.         return None
  78.  
  79.     s16 = f.read(16)
  80.     f.close()
  81.     s = s16[0:4]
  82.     if len(s) != 4:
  83.         return ''
  84.     
  85.     
  86.     try:
  87.         (magic,) = struct.unpack('=l', s)
  88.     except struct.error:
  89.         return ''
  90.  
  91.     if magic == 324508366:
  92.         return 'gdbm'
  93.     
  94.     if magic in (398689, 1628767744):
  95.         return 'bsddb185'
  96.     
  97.     
  98.     try:
  99.         (magic,) = struct.unpack('=l', s16[-4:])
  100.     except struct.error:
  101.         return ''
  102.  
  103.     if magic in (398689, 1628767744):
  104.         return 'dbhash'
  105.     
  106.     return ''
  107.  
  108. if __name__ == '__main__':
  109.     for filename in sys.argv[1:]:
  110.         if not whichdb(filename):
  111.             pass
  112.         print 'UNKNOWN', filename
  113.     
  114.  
  115.